/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.distribuidos.mundo;

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author alvar-go@uniandes.edu.co
 */
public class Archivo implements Serializable{

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public final static String LOCAL = "Local";
    
    private String nombre;

    private String extension;

    private long tamanio;

    private Date fechaCreacion;

    private String propietario;

    private ArrayList<String> palabrasClave;

    public Archivo(File fisico, Date fecha, String nPropietario, ArrayList<String> claves){
        String nombreCompleto = fisico.getName();
        int punto = nombreCompleto.lastIndexOf(".");
        nombre = nombreCompleto.substring(0, punto);
        extension = nombreCompleto.substring(punto + 1, nombreCompleto.length());
        tamanio = fisico.length();
        fechaCreacion = fecha;
        propietario = nPropietario;
        palabrasClave = new ArrayList<String>(claves);
    }
    
    public Archivo(String nNombre, String nExtension, Date nFecha, String nPropietario, long tam, ArrayList<String> claves){
    	nombre = nNombre;
    	extension = nExtension;
    	propietario = nPropietario;
    	fechaCreacion = nFecha;
    	tamanio = tam;
    	palabrasClave = new ArrayList<String>(claves);
    }

    public String darExtension() {
        return extension;
    }

    public Date darFechaCreacion() {
        return fechaCreacion;
    }

    public String darPropietario() {
        return propietario;
    }

    public String darNombre() {
        return nombre;
    }

    public long darTamanio() {
        return tamanio;
    }

    public boolean contienePalabraClave(String clave){
        boolean contiene = false;
        for( int i = 0; i < palabrasClave.size() && !contiene; i++){
            if(palabrasClave.get(i).equals(clave)){
                contiene = true;
            }
        }
        return contiene;
    }
    
    public ArrayList<String> darPalabrasClave(){
    	return palabrasClave;
    }

    public String toString(){
        return nombre;
    }
    
    public String palabrasClaveToString(){
    	String resultado = "";
    	for( int  i = 0; i < palabrasClave.size();i++){
    		if( i == 0 ){
    			resultado = palabrasClave.get(i);
    		}
    		else {
    			resultado += "," + palabrasClave.get(i);
    		}
    	}
    	return resultado;
    }
}
